package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import models.Avaliacao;
import models.Filme;

public class DAOAvaliacao implements DAO<Avaliacao> {

	@Override
	public Integer inserir(Avaliacao f) {
		try {
			// Comando SQL que vai ser enviado ao banco
			String insert = "insert into avaliacao(idfilmania, login, nota) values(?, ?, ?)";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(insert);
			// Seta parâmetros do comando SQL
			statement.setInt(1, f.idfilmania);
			statement.setString(2, f.login);
			statement.setInt(3, f.nota);

			// Executa insert no banco de dados
			return statement.executeUpdate();
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}
		return 0;
	}

	@Override
	public int atualizar(Avaliacao f) {
		try {
			// Comando SQL que vai ser enviado ao banco
			String update = "update avaliacao set nota = ? where idfilmania = ? and login = ?";
			// Objeto que executa o comando SQL
			PreparedStatement statement = DAOConnection.getConnection()
					.prepareStatement(update);
			// Seta parâmetros do comando SQL
			statement.setInt(1, f.nota);
			statement.setInt(2, f.idfilmania);
			statement.setString(3, f.login);

			// Executa update no banco de dados
			return statement.executeUpdate();
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}
		return 0;
	}

	@Override
	public int excluir(Avaliacao f) {
		return 0;
	}

	@Override
	public List<Avaliacao> todos() {
		List<Avaliacao> objs = new ArrayList<Avaliacao>();
		try {
			// Comando SQL que vai ser enviado ao banco
			String query = "select idfilmania,login, nota from avaliacao";
			// Objeto que executa o comando SQL
			Statement statement = DAOConnection.getConnection()
					.createStatement();
			// Execução do comando SQL e retorno como ResultSet
			ResultSet resultSet = statement.executeQuery(query);
			// Iteração no ResultSet
			while (resultSet.next()) {
				Avaliacao obj = new Avaliacao();
				obj.idfilmania = resultSet.getInt(1);
				obj.login = resultSet.getString(2);
				obj.nota = resultSet.getInt(3);

				objs.add(obj);
			}
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}
		return objs;

	}
	
	public int notaInf(Integer f, String login) {
		Avaliacao obj = new Avaliacao();
		try {
			// Comando SQL que vai ser enviado ao banco
			String update = "select nota from avaliacao where idfilmania="+f+" and login="+"'"+login+"'";
			System.out.println(update);
			// Objeto que executa o comando SQL
			Statement statement = DAOConnection.getConnection()
					.createStatement();
			// Seta parâmetros do comando SQL
			ResultSet resultSet = statement.executeQuery(update);
				
				obj.nota = resultSet.getInt(1);			
				
		} catch (SQLException e) {
			System.out.print(e.getMessage());
		} finally {
			DAOConnection.closeConnection();
		}
		return obj.nota;
	}
}